package org.algorithm.熊猫.数组.二月;

import java.util.Arrays;

/**
 * @author 熊猫
 * @version 1.0
 * @date 2022/03/06 9:07 PM   星期二的作业
 * @description: <p>
 * 数组中四数相加最接近target
 * 输入：nums = [-1,2,1,-4], target = 1
 * 输出：2
 * 解释：与 target 最接近的和是 2 (-1 + 2 + 1 + 0 = 2) 。
 * </p>
 * <p>
 * uri: 没有,  如果有， 请参考   最接近的三数之和
 */
public class 最接近的四数之和 {

    public static void main(String[] args) {
        int[] nums = {-1, 2, 1, -4, 5, 3, 0, -2};
        System.out.println(fourSumClosest(nums, 1));
    }

    public static int fourSumClosest(int[] nums, int target) {
        if (nums == null || nums.length < 4) return 0;
        Arrays.sort(nums);
        int base = 10000000;
        for (int i = 0; i < nums.length; i++) {
            int num = nums[i];
            int[] ints = Arrays.copyOfRange(nums, i + 1, nums.length);
            int threeSum = 最接近的三数之和.threeSumClosest(ints, target - num);
            base = Math.min(threeSum+num,base);
            if(base==target){
                return base;
            }
        }
        return base;
    }
}
